﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

namespace 替换文本转成Pascal命名
{
    public class ReadXml
    {
        public void FuncA()
        {
            for (int i = 1; i < 54; i++)
            {
                var xml = File.ReadAllText($"D:\\Aewell\\Code\\共享文档\\docTemplate\\原始xml\\{i}.xml");
                string pattern = @"@[^""<)]*(""|<|\))";
                Regex regex = new Regex(pattern, RegexOptions.None);
                var matchs = regex.Matches(xml);
                var strArr = new List<string>();
                if (matchs!=null)
                {
                    foreach (Match match in matchs)
                    {
                        var value = match.Value.Substring(0, match.Value.Length-1);
                        strArr.Add(value);
                    }
                }
                foreach (var item in strArr)
                {
                    var str = item.ToString().Remove(0, 1);
                    var value = "@"+TransformString(str);
                    xml = xml.Replace(item, value);
                }
                File.WriteAllText($"D:\\Aewell\\Code\\共享文档\\docTemplate\\替换小写之后的XML\\{i}.xml", xml);
            }
        }
        public static string TransformString(string inputStr)
        {
            // 初始化一个StringBuilder用于存储结果  
            StringBuilder result = new StringBuilder();
            // 标记是否为单词的第一个字符  
            bool isFirstChar = true;

            // 遍历输入字符串中的每个字符  
            for (int i = 0; i < inputStr.Length; i++)
            {
                char currentChar = inputStr[i];

                // 如果当前字符是下划线  
                if (currentChar == '_')
                {
                    // 跳过下划线，并将下一个字符标记为首字母  
                    isFirstChar = true;
                    continue;
                }

                // 如果当前字符是单词的第一个字符，则大写它  
                if (isFirstChar)
                {
                    result.Append(char.ToUpper(currentChar));
                    isFirstChar = false; // 后续字符不再是首字母  
                }
                else // 如果不是单词的第一个字符，则小写它  
                {
                    result.Append(char.ToLower(currentChar));
                }
            }

            // 返回处理后的字符串  
            return result.ToString();
        }
    }
}
